package cn.tedu.csmall.stock.webapi.quartz;

import cn.tedu.csmall.stock.webapi.utils.RedisBloomUtils;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;

import java.time.LocalDateTime;

@Slf4j
public class QuartzJob implements Job {

    @Autowired
    private RedisBloomUtils redisBloomUtils;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 当前Job实现类只是为了测试Quartz的效果,所以操作简单一些即可
        log.info("----------------{}-----------------", LocalDateTime.now());
        // 定义一个数组,将要保存到布隆过滤器中的元素全部声明出来
        String[] colors={"red","orange","yellow","green","blue","black","pink"};
        // 定义布隆过滤器保存在Redis中的key
        final String COLOR_BLOOM="color_bloom";
        // redisBloomUtils对象可以指定key,保存布隆过滤器
        // 默认情况下布隆过滤器按存100个元素时误判率为1%开辟内存空间
        // 如果要调试变化上面的值调用redisBloomUtils的bfreserve方法即可
        // 下面执行保存上面数组信息到布隆过滤器
        redisBloomUtils.bfmadd(COLOR_BLOOM,colors);
        // 上面代码运行后,布隆过滤器就在redis中生成了,下面进行判断
        // 声明一个要判断的元素
        String element="gray";
        // 根据redisBloomUtils提供的bfexists方法判断是否在布隆过滤器
        log.info("{}是否在布隆过滤器中:{}",element,
                redisBloomUtils.bfexists(COLOR_BLOOM,element));

    }
}




